package com.woniu.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.woniu.commons.exception.YogaException;
import com.woniu.model.model.YGoods;
import com.woniu.model.param.*;
import com.baomidou.mybatisplus.extension.service.IService;


/**
 * <p>
 * 服务类
 * </p>
 *
 * @author 吴彦祖
 * @since 2024年05月23日
 */
public interface YGoodsService extends IService<YGoods> {

    /**
     * 新增商品
     *
     * @param param form:goodsName;商品名
     *              goodsPrice;商品价格
     *              goodsNum;商品数量
     * @return
     * @throws Exception
     */
    public void InsertBookInfo(GoodsInsertParam param) throws YogaException;

    /**
     * 修改商品图片
     *
     * @param param
     * @return
     * @throws Exception
     */
    public void updateimage(GoodsUpdataImageParam param) throws YogaException;

    /**
     * 修改商品信息
     *
     * @param param //商品id goodsId;
     *              //商品名 goodsName;
     *              //商品价格 goodsPrice;
     *              //商品数量 goodsNum;
     * @return
     * @throws YogaException
     */
    public void updateGoodsMessage(GoodsUpdataMessageParam param) throws YogaException;


    /**
     * 分页查询
     *
     * @param param pageNum;pageSize;
     * @return
     * @throws YogaException
     */
    public Page<YGoods> loadPageGoods(PageParam param) throws YogaException;

    /**
     * 下架商品
     *
     * @param goodsId：商品id
     * @return
     * @throws YogaException
     */
    public void disable(Integer goodsId) throws YogaException;

    /**
     * 上架商品
     *
     * @param goodsId：商品id
     * @return
     * @throws YogaException
     */
    public void enable(Integer goodsId) throws YogaException;

    /**
     * 传一个对象，根据id去修改里面的信息
     * 在商城订单里面用了，用于去修改商品的冻结量和数量
     *
     * @param ygoods 商品对象
     * @return
     * @throws YogaException
     */
    public void updateByIdGoods(YGoods ygoods) throws YogaException;

    /**
     * 添加商品到我的购物车
     *
     * @param ：商品id 数量 用户id
     * @return
     * @throws YogaException
     */
    public void addShoppingCar(AddShoppingCarParam param) throws YogaException;

    /**
     * 删除我的购物车里面的商品
     * GoodSId：商品id
     * number：数量
     * token：用户id
     * @return
     * @throws YogaException
     */
    public void delShoppingCar(AddShoppingCarParam param) throws YogaException;

    /**
     *修改购物车里面商品的数量
     * param   goodsId;商品id
     *             userId;用户id
     *             number;修改的数量
     * @param
     * @return
     * @throws YogaException
     */
    public void changShoppingCarNumber(ChangShoppingCarNumberParam param)throws YogaException;
}
